Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.05.2016, 02:45
Аспирант
Отправить личное сообщение для Agapkin Посмотреть профиль Найти все сообщения от Agapkin
 
Регистрация: 14.05.2016
Сообщений: 33

Выполнить PHP код по клику на кнопку
Помогите пожалуйста, в аяксе ничего не понимаю... по возможности напишите готовый код.
Заранее благодарен !!

есть php код:
<div class="btn-maillist">
	<form method="POST">
		<div class="input-red-button">
			<input type="submit" name="num-mailing" value="<?echo $maillist['MAILING_ID'];?>" />
			<label class="input-red-btn"><span>Отписаться</span></label>
		</div>
	</form>
</div>

<? if( isset( $_POST['num-mailing'] ) )
	{
	\Bitrix\Main\Loader::includeModule('sender');
	$unsuber=\Bitrix\Sender\MailingSubscriptionTable::addUnSubscription(array('MAILING_ID' => $_REQUEST['num-mailing'], 'CONTACT_ID' => $maillist['CONTACT_ID']));
	$result = true;
	}
?>


Вкратце:
это рабочий пхп код, раздражает перезагрузка страницы, и не меняется название кнопки(

переменная <?echo $maillist['MAILING_ID'];?> всегда уникальна, если нажата кнопка выполняется код в который передается $_REQUEST['num-mailing'] она же равна <?echo $maillist['MAILING_ID'];?>

как уже сказал раздражает перезагрузка страницы и название кнопки должно меняться на "Подписаться", а меняется только после повторного обновления страницы....

можно ли средствами аякс реализовать такое?
1)по нажатию на кнопку выполнялся пхп код
2)в пхп код нужно передать переменную
3)без перезагрузки страницы
4)менялось название кнопки

СПАСИБО
Ответить с цитированием
  #2 (permalink)  
Старый 14.05.2016, 10:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

form method="POST"

if( isset( $_POST['num-mailing'] ) ) - естественно.

$_REQUEST['num-mailing'] - нахрена?

Сообщение от Agapkin
1)по нажатию на кнопку выполнялся пхп код
Любой запрос клиента, это выполнение кода на сервере, не важно РНР или иной язык у сервера, если конечно сайт не статичный. Другое дело что будет выполнять сервер, а это можно задать параметром запроса, у вас это num-mailing.

jQuery ведь используется?
Ответить с цитированием
  #3 (permalink)  
Старый 14.05.2016, 15:13
Аспирант
Отправить личное сообщение для Agapkin Посмотреть профиль Найти все сообщения от Agapkin
 
Регистрация: 14.05.2016
Сообщений: 33

есть foreach который перебирает массив и выводит список рассылок на которые подписан клиент, где

MAILING_ID это ID подписки
CONTACT_ID это подписанный мейл
+ выводится рядом кнопка отписки

$_REQUEST['num-mailing'] - нахрена? при нажатии на кнопку отписки какой нибудь рассылки мы передаем ID этой подписки и удачно отписываем мэйл от рассылки...


jQuery ведь используется? на сайте? да..
на этой странице где этот код нигде не применяется .
Ответить с цитированием
  #4 (permalink)  
Старый 14.05.2016, 15:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Agapkin
$_REQUEST['num-mailing'] - нахрена? при нажатии на кнопку отписки какой нибудь рассылки мы передаем ID этой подписки и удачно отписываем мэйл от рассылки...
Я ведь задаю вопрос не затем чтобы узнать что делать надо, а спрашиваю нахрена тут нужен $_REQUEST?

Вы ожидаете эти данные от формы переданной именно методом POST, именно в нем вы проверяете условие:

if( isset( $_POST['num-mailing'] )

так какого черта 'MAILING_ID' => $_REQUEST['num-mailing'], а не 'MAILING_ID' => $_POST['num-mailing']?

Вы либо не понимаете что такое $_REQUEST, либо пишите от фонаря эту бессмыслицу.

Ну а коли jQuery используется, то отправить форму Ajax, ну это делов то, в общем на пару копеек. )

Подключайте его и на этой странице, и ...

PS. Если в форме

<input type="submit" name="MAILING_ID" value="<?echo $maillist['MAILING_ID'];?>" />

то array($_REQUEST['num-mailing'], 'CONTACT_ID' => $maillist['CONTACT_ID'])

И при отключенном выводе предупреждений (что в общем то и должно быть на сервере) пустой суперглобальный массив $_POST на запрос $_POST['num-mailing'] ответит NULL. А значит, достачтоно:

<? if($id = (int)$_POST['num-mailing'])
    {
    \Bitrix\Main\Loader::includeModule('sender');
    $unsuber=\Bitrix\Sender\MailingSubscriptionTable::addUnSubscription(array($id, 'CONTACT_ID' => $maillist['CONTACT_ID']));
    $result = true;
    }
?>

Последний раз редактировалось laimas, 14.05.2016 в 15:53.
Ответить с цитированием
  #5 (permalink)  
Старый 14.05.2016, 16:17
Аспирант
Отправить личное сообщение для Agapkin Посмотреть профиль Найти все сообщения от Agapkin
 
Регистрация: 14.05.2016
Сообщений: 33

Вы либо не понимаете что такое $_REQUEST, либо пишите от фонаря эту бессмыслицу.

скорее не понимаю))))


сделал так:
<?if( isset( $_POST['num-mailing'] ) )
	{
	\Bitrix\Main\Loader::includeModule('sender');
	$unsuber=\Bitrix\Sender\MailingSubscriptionTable::addUnSubscription(array('MAILING_ID' => $_POST['num-mailing'], 'CONTACT_ID' => $maillist['CONTACT_ID']));
	$result = true;
	}
?>




Ну а коли jQuery используется, то отправить форму Ajax, ну это делов то, в общем на пару копеек. )
кому как ... если я в php не очень, то отправить то форму Ajax это есчо на пол года работы))))
Ответить с цитированием
  #6 (permalink)  
Старый 14.05.2016, 17:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Agapkin
скорее не понимаю))))
Ну так применяя надо же понимать что делаем. Надо читать.

Насчет Ajax JQ все просто, кроме базового метода .ajax() есть и упрощенные, среди которых есть и .post(). Там же есть и примеры, нужно просто попробовать.

Если ваша форма отправляется кнопкой

<label class="input-red-btn"><span>Отписаться</span></label>

то это можно выполнить только посредством JS, значит нужно найти этот код в клиентском сценарии, и изменить в нем обычную отправку формы на Ajax.
Ответить с цитированием
  #7 (permalink)  
Старый 16.05.2016, 05:02
Аспирант
Отправить личное сообщение для Agapkin Посмотреть профиль Найти все сообщения от Agapkin
 
Регистрация: 14.05.2016
Сообщений: 33

laimas может еще чем поможете? а лучше напишете готовый вариант ))?

читал читал, так и не врубился что к чему...
создал 2 файла
index.php
$.ajax({
type: "POST",
url: "action.php",
data: "", // тут примерно понимаю что написать, но понять не могу как на кнопку будет завязано
success: function(response){
$('#response').html(response); // тут видимо получим ответ..
}
});


action.php
// тут выполнится какой то код видать...


че то тяжко как то с этим, мож набрасали бы пример в моем случае? я бы хотяп наглядно посмотрел шо к чему , плеазе)))) ???
Ответить с цитированием
  #8 (permalink)  
Старый 16.05.2016, 13:15
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Agapkin
но понять не могу как на кнопку будет завязано
Я только сейчас вник, что input submit.

А зачем на кнопку вешать ID, щелкать по нему, а смотреть на "Отписаться", которая не работает? Что проще нельзя?

<script>
$(function() {
    $('#unsubscribe').submit(function(e) {
        e.preventDefault();
        $.post('url', $(this).serialize(), function(response) {
            $('#response').html(response); 
        }, 'html')
    });
});
</script>

<form id="unsubscribe" method="POST">
    <div class="input-red-button">
        <input type="hidden" name="num-mailing" value="<?echo $maillist['MAILING_ID'];?>" />
        <input type="submit" value="Отписаться" />
    </div>
</form>
Ответить с цитированием
  #9 (permalink)  
Старый 17.05.2016, 02:20
Аспирант
Отправить личное сообщение для Agapkin Посмотреть профиль Найти все сообщения от Agapkin
 
Регистрация: 14.05.2016
Сообщений: 33

в таком виде не работает(

формируется из цикла 2 кнопки, но срабатывает только вторая и то с перезагрузкой страницы((
Ответить с цитированием
  #10 (permalink)  
Старый 17.05.2016, 03:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Именно в таком виде и не должно работать. Нужно подключать jQuery, чтобы работало.
О двух кнопках да еще в цикле.... не понимаю.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
В зависимости от значения флажка выводить разный php код ZusulZoid Элементы интерфейса 2 06.09.2010 21:20
как выполнить действие в зависимости от результата php FRIE jQuery 5 04.08.2010 08:44
javascript и php (Вопрос) Гауляйтер Общие вопросы Javascript 3 06.05.2009 09:23
Выполнить код после загрузки изображения EugenyK Events/DOM/Window 2 15.07.2008 10:09